import java.util.HashMap;
import java.util.Map;

/**
 * Created With IntelliJ IDEA
 * Description:leetcode: 387. 字符串中的第一个唯一字符
 * <a href="https://leetcode.cn/problems/first-unique-character-in-a-string/">...</a>
 * User: DELL
 * Data: 2023-03-29
 * Time: 22:58
 */
public class Solution {


    /**
     * 本题就是一个简单的哈希存出现次数的方法
     */
    public int firstUniqChar(String s) {
        //题目中规定字符串不为空
        //辅助HashMap
        Map<Character,Integer> hashMap = new HashMap<>();
        //第一次遍历：统计每个字符出现的次数
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            hashMap.put(ch,hashMap.getOrDefault(ch,0)+1);
        }
        //第二次遍历：输出第一个只出现一次的字符
        for (int i = 0; i < s.length(); i++) {
            if (hashMap.get(s.charAt(i)) == 1) {
                return i;
            }
        }
        return -1;
    }
}